0 REM ** MINESWEEPER 64 ** 1 REM ** UPDATED BY ADAM WADE ** 2 REM ** AKA SIMBA THE KING ** 3 REM ** IN 1996 ** MDZ! ** 5 REM" "NOW BUGGER OFF - YOU CANT LOOK AT MY PROGGY!(null) 6 POKE 808,234:POKE 657,128 10 POKE 53280,5:POKE 53281,11 15 PRINT"[147][155]"TAB(13)"MINESWEEPER 64" 20 PRINT" ADAPTED FROM THE IBM WINDOWS GAME" 25 PRINT" DO YOU WANT INSTRUCTIONS ??? "; 30 GET A$:IF A$="N" THEN PRINT A$:GOTO 100 35 IF A$<>"Y"THEN 30 39 : 40 REM ** INSTRUCTIONS ** 45 PRINT A$:FORH=1 TO 1000:NEXT:PRINT"[147] INSTRUCTIONS FOR MINEFIELD 64" 50 PRINT"IN THIS GAME 10, 25, 40 OR 50 MINES ARE" 51 PRINT"PLACED ON A 10 X 18 GRID" 52 PRINT"YOU MUST GUESS GRID POSITIONS WHERE" 53 PRINT"THERE ARE NO MINES. WHEN YOU GUESS A" 54 PRINT"POSITION, A NUMBER IN THAT SQUARE WILL SHOW HOW MANY MINES ARE NEARBY." 55 PRINT"  NOTE: [146] YOU WILL ONLY BE TOLD HOW MANY" 56 PRINTTAB(9)"MINES ARE IN HORIZONTAL OR"TAB(49)"VERTICALLY ADJACENT SQUARES." 57 PRINTTAB(9)"YOU WILL NOT BE TOLD IF THERE"TAB(49)"ARE ANY MINES IN DIAGONALLY" 58 PRINTTAB(9)"ADJACENT SQUARES." 59 PRINT"IF YOU GUESS A SQUARE THAT CONTAINS A" 60 PRINT"MINE, YOU WILL BE SHOWN WHERE ALL THE MINES ARE, THEN THE GAME WILL END." 61 PRINT"  PRESS SPACE TO CONTINUE " 62 GET A$:IF A$<>CHR$(32) THEN 62 65 PRINT"[147] INSTRUCTIONS FOR MINEFIELD 64" 66 PRINT"TO GUESS A GRID POSITION, ENTER THE" 67 PRINT"COORDINATES OF THE SQUARE, SEPARATED BY A COMMA." 68 PRINT"WHEN ENTERING THE COORDINATES, ENTER THE" 69 PRINT"[145]COLUMN NUMBER FIRST, THEN THE ROW." 70 PRINT"IF YOU DO NOT ENTER THE TWO COORDINATES" 71 PRINT"TOGETHER, IT DOES NOT MATTER, HOWEVER," 72 PRINT"YOU WILL HAVE TO WAIT WHILE THE SCREEN" 73 PRINT"IS REDRAWN. THE SAME WILL HAPPEN IF THE" 74 PRINT"PLAYING AREA GETS SCROLLED OFF SCREEN." 75 PRINT"  PRESS SPACE TO CONTINUE " 80 GET A$:IF A$<>CHR$(32) THEN 80 99 : 100 REM ** INITIALISATION ** 105 A=RND(-TI) 110 DIM X(50),Y(50),C(50),B(2023),N(2023),P$(11),P(11):A=1148 115 PRINT"[147][155]"TAB(13)"MINESWEEPER 64" 120 PRINT"CHOOSE YOUR LEVEL OF DIFFICULTY" 121 PRINT" 1 - 10 MINES" 122 PRINT" 2 - 25 MINES" 123 PRINT" 3 - 40 MINES" 124 PRINT" 4 - 50 MINES" 130 GET A$:IF A$="1" THEN D=10:GOTO 140 131 IF A$="2" THEN D=25:GOTO 140 132 IF A$="3" THEN D=40:GOTO 140 133 IF A$="4" THEN D=50:GOTO 140 134 GOTO 130 140 PRINT""TAB(12)"* PLEASE WAIT *" 145 G=180-D:P(11)=0 150 FORS=1 TO D:PRINT"[145]POSITIONING MINE"S 160 X(S)=INT(RND(0)*18) 165 Y(S)=INT(RND(0)*10) 170 FORR=1 TO 50:IF R=S THEN 180 175 IF X(R)=X(S) AND Y(R)=Y(S) THEN 160 180 NEXTR 185 C(S)=A+(80*Y(S))+(X(S)*2):NEXTS 199 : 200 REM ** DRAW GRID ** 210 PRINT"[147] 0 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1" 215 PRINT" 0 1 2 3 4 5 6 7" 220 PRINT" [176][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][178][192][174]" 225 FORT=0 TO 9 230 PRINT"[145]"T"[221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221] [221]" 235 IF T=9 THEN 245 240 PRINT"[145] [171][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][219][192][179]" 245 NEXT 250 PRINT"[145] [173][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][177][192][189]" 255 IF Z<>0 THEN RETURN 260 INPUT"MOVE ?? [157][157][157][157][157][157]";X,Y 265 GOSUB 300 270 IF F<>0 THEN 260 275 G=G-1:P(11)=P(11)+1:IF G=0 THEN 500 280 GOTO 260 290 PRINT"SPACE ALREADY USED" 295 FORT=1 TO 1000:NEXT:PRINT" ":F=1:RETURN 299 : 300 REM ** CHECK & POKE LOCATIONS ** 305 F=0 310 IF PEEK(1107)<>112 THEN GOSUB 400 315 IF PEEK(A+(80*Y)+(X*2))<>32 THEN GOTO 290 316 IF X<0 OR X>17 THEN F=1:RETURN 317 IF Y<0 OR Y>9 THEN F=1:RETURN 320 FORS=1 TO 50 325 IF A+(80*Y)+(X*2)=C(S) THEN 600 330 NEXTS 335 M=0:FORS=1 TO D 340 IF A+(80*Y)+(X*2)-2=C(S) THEN M=M+1 341 IF A+(80*Y)+(X*2)+2=C(S) THEN M=M+1 342 IF A+(80*Y)+(X*2)-80=C(S) THEN M=M+1 343 IF A+(80*Y)+(X*2)+80=C(S) THEN M=M+1 345 NEXTS 350 IF M=0 THEN POKE A+(80*Y)+(X*2),48 351 IF M=1 THEN POKE A+(80*Y)+(X*2),49 352 IF M=2 THEN POKE A+(80*Y)+(X*2),50 353 IF M=3 THEN POKE A+(80*Y)+(X*2),51 354 IF M=4 THEN POKE A+(80*Y)+(X*2),52 355 B(A+(80*Y)+(X*2))=A+(80*Y)+(X*2):N(A+(80*Y)+(X*2))=PEEK(A+(80*Y)+(X*2)) 360 RETURN 399 : 400 REM ** RE-POKE SCREEN ** 405 Z=5:GOSUB 210 410 Z=0:FORS=1024 TO 2023:POKE B(S),N(S):NEXT 420 RETURN 499 : 500 REM ** GAME COMPLETE ** 505 PRINT"  PRESS SPACE TO CONTINUE " 510 GET A$:IF A$<>CHR$(32) THEN 510 515 PRINT"[147]"TAB(13)"MINESWEEPER 64" 520 PRINT"WELL DONE YOU HAVE COMPLETED THE GAME!" 525 PRINT"TRY AGAIN WITH A HIGHER (OR LOWER)" 530 PRINT"AMOUNT OF MINES...IF YOU DARE..." 540 GOSUB 700 550 GOTO 650 599 : 600 REM ** GAME OVER ** 605 POKE C(S),170:FORT=1 TO D:POKE C(T),170:NEXT 610 PRINT"  PRESS SPACE TO CONTINUE " 615 GET A$:IF A$<>CHR$(32) THEN 615 620 PRINT"[147]"TAB(13)"MINESWEEPER 64" 625 PRINT"YOU STEPPED ON A MINE!" 630 PRINT"YOU HAVE BEEN SCATTERED ACROSS THE MINEFIELD" 640 PRINT""TAB(14)" GAME OVER " 645 GOSUB 700 650 PRINT"WOULD YOU LIKE TO PLAY AGAIN ??? "; 660 GET A$:IF A$="N" THEN PRINT A$:GOTO 670 665 IF A$<>"Y" THEN 660 666 PRINT A$:FORS=1 TO 50:C(S)=0:NEXT 667 FORS=1024 TO 2023:B(S)=0:NEXT:GOTO 115 670 PRINT"THANKS FOR PLAYING MINEFIELD 64." 675 PRINT"THIS UPDATE WAS MADE IN 1996 BY ADAM" 680 PRINT"WADE (AKA  SIMBA THE KING [146] ) FOR YOUR ENJOYMENT!" 685 PRINT""TAB(10)" PRESS SPACE TO END " 690 GET A$:IF A$<>CHR$(32) THEN 690 695 CLOSE 15:LOAD"THE MAIN MENU/BM",8,1 699 : 700 REM ** HIGHSCORES ** 705 CR$=CHR$(13) 710 PRINT"  PRESS SPACE TO CONTINUE " 715 GET A$:IF A$<>CHR$(32) THEN 715 720 PRINT"[147]"TAB(11)" ** HIGHSCORES ** ":PRINT" POS. NAME"TAB(16)"SCORE" 730 OPEN 15,8,15 731 IF D=10 THEN B$="MINESWEEP 64 L1" 732 IF D=25 THEN B$="MINESWEEP 64 L2" 733 IF D=40 THEN B$="MINESWEEP 64 L3" 734 IF D=50 THEN B$="MINESWEEP 64 L4" 740 OPEN 2,8,2,"0:"+B$+",S,R" 745 GOSUB 790 750 FORE=1 TO 10 755 INPUT#2,P$(E),P(E) 760 GOSUB 790 765 NEXT 770 CLOSE 2 775 FORE=1 TO 10:L$(E)=STR$(P(E)):NEXT 780 FORE=1 TO 10:PRINTE;TAB(5);P$(E);TAB(20-LEN(L$(E)));P(E):NEXT 785 GOTO 800 789 : 790 INPUT#15,EN,EM$,ET,ES 795 IF EN>0 THEN PRINT EN,EM$,ET,ES:STOP 796 RETURN 799 : 800 REM ** CHECK SCORES ** 805 PRINT"YOUR SCORE WAS"P(11) 810 IF P(11)<=P(10) THEN 900 815 PRINT"YOU GOT A HIGHSCORE! WELL DONE!" 820 INPUT"PLEASE ENTER YOUR NAME ";P$(11) 825 IF LEN(P$(11))>10 THEN PRINT"THE MAXIMUM LENGTH IS 10 CHARACTERS":GOTO 820 830 FORE=10 TO 1 STEP -1 835 IF P(E)=>P(E+1) THEN 850 840 IF P(E)